SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porCongresosSeminariosEtc] @idInscripcion as integer ,@pje as float output,@resultado as int  AS
SET NOCOUNT ON
declare  @idAgente as int,@idCargoGenerico as int,@idAsignaturaGenerica as int,@cargogenerico as int,@asignaturaGenerica as int, @idTipoConvocatoria as int ,@idlocalidad as int, @TipoDeEvento as int,@Duracion as int,@UnidadDeTiempo as int,@TipodeParticipacion as int, @FechaDelEvento as datetime
declare @FechaLimite as datetime
declare @idCongresoSeminario as int,@horas int,@Cargogen as int,@AsigGen as int,@tipoDeEntidad as int,@IdCapAg as int
declare @pjeAuxiliar  as float , @pjeOficiales as float,@pjePrivados as float,@pjeSeminarios as float,@pjePreseminarios as float, @topeCongresosOficiales as float,@topeCongresosPrivados as float
declare @idCongresoSeminario_anterior as int
declare @nivel_insc as int,@ciclo as int,@grupoIncumbencia as int, @grupoincumbencia2 as int
declare @c1 as int, @c2 as int
DECLARE @Error INT

BEGIN TRANSACTION
             SET @ERROR=0

--Le asigno los mismos topes que para cursos oficiales y privados
select @topeCongresosOficiales= (select valor1 from tb_parametros where idparametro=43)
select @topeCongresosPrivados= (select valor1 from tb_parametros where idparametro=44)

set @idCongresoSeminario_anterior = -1
select  @idAgente=i.Agente,@IdcargoGenerico = i.CargoGenerico,@AsigGen=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite,@nivel_insc = i.nivel,@ciclo=ciclo
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

delete [SageNET].[dbo].[tb_DetallePuntajes] where agente = @idagente and idconcepto=203 and inscripcion=@idinscripcion

if @nivel_insc = 3 and @ciclo = 2 set  @nivel_insc=4

select @grupoIncumbencia=case
	when @nivel_insc = 2 then 572
	when @nivel_insc = 3 then 573
	when @nivel_insc = 4 then 571
end

select @grupoIncumbencia2=case
	when @nivel_insc = 2 then 570
	when @nivel_insc = 3 then 570
	when @nivel_insc = 4 then 571
end


if  @idTipoConvocatoria in (1,2,3,4,5,9) -- TipoConvocatoria = 12  ingreso,interinatos y suplencias
	begin

	declare c cursor FORWARD_ONLY FOR
		select  distinct IdCongresoSeminario,Cong.TipoDeEvento,Cong.Duracion,Cong.UnidadDeTiempo,Cong.TipodeParticipacion,h.Cargogenerico,h.AsignaturaGenerica,Cong.TipoEntidad,FechaDelEvento
		from
		tb_CongresosSeminarios Cong
--		join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=Cong.GrupoIncumbencias
--		join tb_incumbencias h on G.idGrupoIncumbencia=h.grupoIncumbencia
		join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=Cong.GrupoIncumbencias
--		join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
		join tb_incumbencias h on G.idGrupoincumbencia=h.grupoIncumbencia
--		join tb_entidadesCapacitadoras Ent on Cong.entidadOrganizadora=Ent.idEntidad
--		join tb_tipoEntidadCapacitadora T on Ent.tipoEntidad=T.id
		where Cong.agente=@idAgente and h.CargoGenerico=@idCargogenerico and h.AsignaturaGenerica=@AsigGen and Cong.FechaPresentacion <= @FechaLimite --and (G.idGrupoincumbencia=@grupoIncumbencia or G.idGrupoincumbencia=@grupoIncumbencia2)


		SET @Error = @@ERROR 
		IF @Error <> 0 GOTO Salir

--ojoooooo chequear que el antecedente tenga fecha menor a la de la convocatoria 
-- las capacitaciones que no incumben se pueden valorar como curso si el campo ValeComoCurso está en S
	open c

	fetch next from c into @idCongresoSeminario,@TipoDeEvento,@Duracion,@UnidadDeTiempo,@TipodeParticipacion,@Cargogenerico,@AsignaturaGenerica,@TipoDeEntidad,@FechaDelEvento

	set @pjeAuxiliar=0
	set @pjeOficiales = 0
	set @pjePrivados=0

	while @@FETCH_STATUS = 0

	begin

		if @IdCongresoSeminario <> @idCongresoSeminario_anterior --agregué esta condición por que algunos cusros se seleccionan 2 veces
		begin
			set @idCongresoSeminario_anterior = @IdCongresoSeminario
-- para 2005 congresos seminarios,etc se valoran igual que cursos realizados

					if @unidadDeTiempo = 1  -- si la unidad de tiempo está en años curso de 1 año equivale a curso de entre 300 y 420 horas didácticas. Se le asigna 3 puntos a los cursos de 1 año, y 5 puntos a los de más de un año
					begin	
						if @duracion = 1 set @horas = 400 else set @horas =500 --lo convierto a horas didacticas
					end 
					if @unidadDeTiempo = 2  -- si la unidad de tiempo está en meses
					begin	
						if @duracion <= 12 set @horas = 400 else set @horas =500 --lo convierto a horas didacticas
					end 
					if @unidadDeTiempo = 3  -- si la unidad de tiempo está en dias se lo convierte a horas didactica 1 día=6horas didácticas
					begin	
						set @horas =  @duracion * 6 
					end 
					if @unidadDeTiempo = 4  -- si la unidad de tiempo está en horas
					begin	
						set @horas = isnull(@duracion,0) 
					end 
				print 'horas' + cast(@horas as varchar)
					select @pjeAuxiliar=
						case
							when @horas BETWEEN 300 AND 420 then 3
							when @horas > 420 then  5
							when @horas BETWEEN 80 AND 300  then (1.5+(@horas-80)*.0068182)	  
							when @horas <= 80 then  0.5+(@horas-10)*.0142859	
							else 0
					end
				print 'puntaje' + cast (@pjeAuxiliar as varchar)
		
					if @TipoDeParticipacion <> 5  set @pjeAuxiliar=@pjeAuxiliar*0.1 --si no es aprobado le corresponde el 10% del puntaje
					if @tipoDeEntidad=1  
					begin
						INSERT INTO [SageNET].[dbo].[tb_DetallePuntajes](inscripcion,[Agente], [idConcepto], [detalle1], [detalle2], [detalle3], [detalle4], [detalle5], [detalle6], [detalle7], [detalle8])
						VALUES(@idinscripcion,@idagente,203,'Privado ',cast(@idCongresoSeminario as varchar),cast(@horas as varchar),cast(@unidadDeTiempo as varchar),cast(@TipoDeParticipacion as varchar),cast(round(@pjeAuxiliar,3) as varchar),null,null)
						SET @Error = @@ERROR 
						IF @Error <> 0 GOTO Salir

						set @pjeprivados=@pjeprivados+@pjeAuxiliar
						if @pjeprivados > @TopeCongresosPrivados set @pjePrivados=@TopeCongresosPrivados
					end
					else
					     begin	
						INSERT INTO [SageNET].[dbo].[tb_DetallePuntajes](inscripcion,[Agente], [idConcepto], [detalle1], [detalle2], [detalle3], [detalle4], [detalle5], [detalle6], [detalle7], [detalle8])
						VALUES(@idinscripcion,@idagente,203,'Oficial ',cast(@idCongresoSeminario as varchar),cast(@horas as varchar),cast(@unidadDeTiempo as varchar),cast(@TipoDeParticipacion as varchar),cast(round(@pjeAuxiliar,3) as varchar),null,null)
						SET @Error = @@ERROR 
						IF @Error <> 0 GOTO Salir

						set @pjeOficiales=@pjeOficiales+@pjeAuxiliar
						if @pjeOficiales > @TopeCongresosOficiales set @pjeOficiales=@TopeCongresosOficiales
				    	     end
		end	
		fetch next from c into @idCongresoSeminario,@TipoDeEvento,@Duracion,@UnidadDeTiempo,@TipodeParticipacion,@Cargogenerico,@AsignaturaGenerica,@TipoDeEntidad,@FechaDelEvento
		end
		set @pje =@pjeOficiales+@pjePrivados	
		close c
		deallocate c
		set @resultado = 0/* no vale para 2006 ...........no se guarda el detalle de si son oficiales o privados
		begin transaction
			select @c1=case
				when @idTipoConvocatoria= 1 then 537 -- congresos oficiales
				when @idTipoConvocatoria= 2 then 541 
				when @idTipoConvocatoria= 9 then 591 
			end
			select @c2=case
				when @idTipoConvocatoria= 1 then 538 -- congresos privados
				when @idTipoConvocatoria= 2 then 542
				when @idTipoConvocatoria= 9 then 592
	
			end

*/

	end

print 'puntaje final'
print  @pje

Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porCongresosSeminariosEtc] TO [Juntas]
GO
